﻿using Microsoft.Lync.Model;
using Microsoft.Lync.Model.Conversation;
using System;
using System.Diagnostics;
using System.Windows.Forms;

namespace AudioVideoConversation
{
    /// <summary>
    /// カンバセーションメンバーの名簿をリストボックスに表示する
    /// </summary>
    public class ParticipantItem
    {
        public ParticipantItem(Participant participant)
        {
            Debug.Assert(participant != null);
            Participant = participant;
        }

        /// <summary>
        /// Gets / Sets 
        /// </summary>
        public Participant Participant { get; private set; }

        /// <summary>
        /// 連絡先の名簿を返す
        /// </summary>
        public override string ToString()
        {
            if (Participant == null)
            {
                return string.Empty;
            }

            string displayName = null;
            try
            {
                displayName = Participant.Contact.GetContactInformation(ContactInformationType.DisplayName) as string;
            }
            catch (LyncClientException lyncClientException)
            {
                Console.WriteLine(lyncClientException);
            }
            catch (SystemException systemException)
            {
                if (LyncModelExceptionHelper.IsLyncException(systemException))
                {
                    MessageBox.Show("連絡先の情報取得する時に、エラーが発生しました。" + systemException);
                    Console.WriteLine("エラー:: " + systemException);
                }
                else
                {
                    throw;
                }
            }

            //連絡先が自己である場合には、（自己）sufixを追加
            displayName = displayName ?? "<Unknown>";
            return Participant.IsSelf ? displayName + " (自己)" : displayName;
        }
    }
}
